<?php

declare(strict_types=1);

namespace app\model;

use think\Model;

class User extends Model
{
    // 设置表名
    protected $table = 'users';

    // 设置主键
    protected $pk = 'id';

    // 自动写入时间戳
    protected $autoWriteTimestamp = true;
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    // 字段自动完成
    protected $schema = [
        'id'          => 'int',
        'username'    => 'string',
        'email'       => 'string',
        'password'    => 'string',
        'create_time' => 'datetime',
        'update_time' => 'datetime',
    ];

    // 密码加密
    public function setPasswordAttr($value)
    {
        return password_hash($value, PASSWORD_DEFAULT);
    }

    // 验证密码
    public function verifyPassword($password)
    {
        return password_verify($password, $this->password);
    }

    /**
     * 检查给定的明文密码是否与用户存储的哈希密码匹配
     *
     * @param string $password 用户输入的明文密码
     * @return bool 如果密码匹配则返回 true，否则返回 false
     */
    public function checkPassword(string $password): bool
    {
        // $this->password 获取的是当前模型实例（即该用户）在数据库中存储的哈希密码
        return password_verify($password, $this->password);
    }
}
